//package com.demo.rocketmq.controller;
//
//import com.alibaba.fastjson2.JSON;
//import com.nhtech.base.mq.RocketMqDelayLevelEnum;
//import com.nhtech.base.mq.RocketMqTemplate;
//import com.nhtech.demo.mq.config.TopicConfig;
//import com.nhtech.demo.mq.model.DemoOrder;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.exception.ExceptionUtils;
//import org.apache.rocketmq.client.producer.SendResult;
//import org.apache.rocketmq.client.producer.SendStatus;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import java.util.List;
//
///**
// * @author wangfengchen
// */
//@Slf4j
//@RestController
//@RequestMapping("/mq")
//public class RocketMqController {
//
//    @Autowired
//    private RocketMqTemplate rocketMqTemplate;
//    @Autowired
//    private TopicConfig topicConfig;
//
//
//
//    /**
//     * 同步消息
//     * @param msg
//     * @return
//     */
//    @GetMapping("/sendMq")
//    public boolean sendMq(String msg) {
//        try {
//            SendResult sendResult = rocketMqTemplate.send(topicConfig.getDemoTopic(), msg);
//            if (sendResult.getSendStatus().equals(SendStatus.SEND_OK)) {
//                log.info("发送消息成功，sendResult = {}", sendResult);
//                return true;
//            } else {
//                log.error("发送消息失败，sendResult = {}", sendResult);
//                return false;
//            }
//        } catch (Exception e) {
//            log.error("发送消息异常，e = {}", ExceptionUtils.getStackTrace(e));
//            return false;
//        }
//    }
//
//    /**
//     * 同步延时消息
//     * @param msg
//     * @return
//     */
//    @GetMapping("/sendDelayMq")
//    public boolean sendDelayMq(String msg) {
//        try {
//            SendResult sendResult = rocketMqTemplate.sendDelay(topicConfig.getDemoTopic(), msg, RocketMqDelayLevelEnum.time10s);
//            if (sendResult.getSendStatus().equals(SendStatus.SEND_OK)) {
//                log.info("发送消息成功，sendResult = {}", sendResult);
//                return true;
//            } else {
//                log.error("发送消息失败，sendResult = {}", sendResult);
//                return false;
//            }
//        } catch (Exception e) {
//            log.error("发送消息异常，e = {}", ExceptionUtils.getStackTrace(e));
//            return false;
//        }
//    }
//
//    /**
//     * 同步顺序消息
//     *
//     * @return
//     */
//    @RequestMapping("/sendSequenceMq")
//    public boolean sendSequenceMq() {
//        List<DemoOrder> list = DemoOrder.getOrderList();
//        for (DemoOrder demoOrder : list) {
//            try {
//                SendResult sendResult = rocketMqTemplate.sendWithSelector(topicConfig.getSequenceTopic(), JSON.toJSONString(demoOrder), String.valueOf(demoOrder.getOrderId()));
//                if (sendResult.getSendStatus().equals(SendStatus.SEND_OK)) {
//                    log.info("顺序MQ发送消息成功，sendResult = {}", sendResult);
//                } else {
//                    log.error("顺序MQ发送消息失败，sendResult = {}", sendResult);
//                    return false;
//                }
//            } catch (Exception e) {
//                log.error("顺序MQ发送消息异常，e = {}", ExceptionUtils.getStackTrace(e));
//                return false;
//            }
//        }
//        return true;
//    }
//
//    /**
//     * 异步消息
//     *
//     * @param msg
//     * @return
//     */
//    @GetMapping("/sendAsyncMq")
//    public boolean sendAsyncMq(String msg) {
//        rocketMqTemplate.sendAsync(topicConfig.getDemoTopic(), msg);
//        return true;
//    }
//
//    /**
//     * 异步延时消息
//     *
//     * @param msg
//     * @return
//     */
//    @GetMapping("/sendAsyncDelayMq")
//    public boolean sendAsyncDelayMq(String msg) {
//        rocketMqTemplate.sendAsyncDelay(topicConfig.getDemoTopic(), msg, RocketMqDelayLevelEnum.time10s);
//        return true;
//    }
//
//
//}
